AdventureMaker is free for your personnal pleasure and use. However, you may not publically distribute the adventures you create with AdventureMaker unless you are a registered user. The registration fee is $30.
AdventureMaker is copyrighted, and I reserve all rights to it. Please do not remove this notice. Thanks.
Patricia Smith
Epiboly SoftWare CIS: 70655,425
325 E. 79th Street, Apt. 13d MacNet: SmithPB
New York, NY 10021 Genie: P-Smith
••••••••••••••••••••• AdventureMaker Help •••••••••••••••••••••••••
Adventure! is driven by flags. They are numerous, obscure and hard to remember. This help box gives brief descriptions of all of the flags for the different record sets. It is meant to be a 'crib sheet' only; full explanations are not included. Be forewarned. You will never, ever figure out what to do with these flags without reading the documentation for AdventureMaker.
In what follows, any number referred to with "##" is a combination giving both block number and room or object number. Calculate these as follows:
Room## = (Block#)*(10) + Room#
Object## = (Block#)*(20) + Object#
• ROOM RECORDS
Room Exits:
0 < num <= 10 go to room#
10 < num <= 110 go to room## (new block)
Room ExitFlags:
20 < num <= 220 need object ##
num = -1 just can't go
num = -2 can't go with auxilary descripttion
num = -3 can't go if have items in inventory
num = -4 drop everything then go
num = -7 cure Moss then go
-220 <= num < -20 can't have the object##
0 < num ‚â§ 20 'go' is an action called by an object named 'num'.
(If the 'N' exit is flagged with 12, then the parser
interprets this as 'go 12'. It looks for an object
named '12', then searches that object's Action List
for an action named 'go'.)
• OBJECT RECORDS
Get/Show Flags (Columns 1 and 2):
Get Show
Row 1 0 can't get 0 don't show
1 can get 1 do show
-1 take is an action
-2 drop is an action
-3 both take and
drop are actions
Row 2 0 main description 0 main description
1 aux 1 description 1 aux 1 description
2 aux 2 description 2 aux 2 description
Row 3 not used drop other object##
The Action List (Row 1, Column 3 through Column 10):
The Action List holds the action numbers of the actions that can be performed on or by the object.
If you want to allow a one-word verb command, eg 'jump', then the action# called should have the name 'nil'.
If you want a travel instruction to set flags and/or give a text response, then the action# called must have the name 'go' and the calling object must have its own object number as one of its names. If there are no restrictions on the action, the travel instruction will then be carried out as usual.
If you want 'take' to set flags and/or give a text response, then the Get Flag of the ObjectRecord must be '-1' and the action# called should have the name 'take'. For 'drop', the Get Flag must be '-2' and the action name must be 'drop'. If the Get Flag is '-3', then the parser will consider both 'take' and 'drop' to be true actions. If there are no restrictions on the actions, both 'take' and 'drop' will also carry out their normal inventory functions.
An Object's Action List is permanent. You can change action numbers with action setflags, but these changes won't 'travel' across block boundaries or through a save/restore. When a new block is read in from disk, the Action List will revert to its original form. An object's flags, on the other hand, will travel nicely, as will Get and Show. Only the Action List itself is permanent.
Row 2 and Row 3 Flags (Column 3 through Column 10):
In general Row 2 flags govern room interactions and Row 3 flags govern object interactions.
Row 3 flags are checked _before_ Row 2 flags. If there is a Row 3 restriction (say, -1) then the Row 2 request will not be carried out (transport, for example). On the otherhand, if there is a Row 2 restriction ( -1 perhaps), then a Row 3 request (clear moss, say) _will_ be carried out, because this will happen before the Row 2 flag is examined by the parser.
Row 2 Flags:
num = 111 random travel
10 < num ‚â§ 110 travel to new Room##
num = 6 remove object (it disappears)
num = 5 drop object
num = 4 take auxiliary object
num = 3 take object
num = 2 start timer /no sound
num = 1 start timer /with sound
num = -1 just can't do
num = -7 clear moss
num = -9 you're dead
-110 ‚â§ num < -10 must be in Room## for action to take place.
Row 3 Flags:
20 < num ‚â§ 220 need the object## for action to take place.
num = 6 remove object (it disappears)
num = 5 drop object
num = 4 take auxiliary object
num = 3 take object
num = 2 start timer /no sound
num = 1 start timer /with sound
num = -1 just can't do
num = -2 clear timer
num = -3 can't do if not Time
num = -4 can't do if Time
num = -5 can't do if not Moss
num = -6 can't do if Moss
num = -7 clear Moss
num = -8 Moss
-220 ‚â§ num < -20 can't do if have the object##.
Special Combinations:
If the Row 2 flag is '-9' (dead) and the Row 3 flag is set, then player will die if the action _can't_ be done, but not otherwise.
if a Row 2 'death' or 'travel' flag is set when Moss is invoked then the flagged result (death or travel) will take place at the last TimeCheck of the Moss sequence, and only if the Moss has not been 'cured' by then.
• ACTION RECORDS
An action _must_ have at least one name, otherwise the record will not be written.
Special Action Names:
'nil' - allows the calling object to be a stand-alone verb.
'take'/ 'drop' - allows standard inventory instructions to behave as true
actions. (This works only if flagged in an object's Get Box )
'go' - enables travel instructions to behave as true actions.
SetFlags:
Each action# can be called by up to 3 different objects. For each calling object, there is a row of setflag boxes, headed by the number of the calling object:
calling room setflags object setflags
obj# aux Rm col set# Obj row col set#
Àô Àô Àô Àô Àô Àô Àô Àô Àô
Aux Num:
20 < aux Aux gives the object## for use in a prepositional phrase,
0 < aux <= 15 If a MossFlag is set in the calling object
then aux = action# of the Moss action record.
Room SetFlags:
If the col# is negative, then Exits are set. If the col# is positive then ExitFlags are set:
col < 0 sets Exits in Rm to set#
col > 0 sets ExitFlags in Rm to set#
Exits and ExitFlags are set only if the calling object is in its block of origin or if the calling object has a "must be in specific room" flag set on the action.
Object SetFlags:
Changes the value of the entry in the 'row' and 'col' of the 'obj' to the 'set# . For example, if the object setflags are [19, 2, 2, 1] then this will set row 2, column 2 of object 19 to '1'.
Again, flags are set only if the calling object is in its block of origin or if the calling object has a "must be in specific room" flag set on the action.
Text Boxes:
A1 = text used if action is doable.
A2 = text used if action can't be done.
Special Action Records:
Time Records:
If a TimeFlag is set in the calling object, then Room and Object SetFlags will be set _only_ for the duration of the timer. Values then revert to the original settings when the timer expires. (An exception is if Exits are changed, the change is permanent.)
TextBox A1 gives the text for timer activation.
TextBox A2 gives the text for end of timer.
The timer lasts for the number of moves given in the Game Info header dialog. The timer always expires if the player crosses a block boundary or saves a game.
Moss Records:
"Moss" is a long term timer function. It can invoke multiple interruptions, can survive a Save/Restore and can cross block boundaries. It differs from the simple "Time" function in that it cannot restore flags to their original setting before Moss started.
Careful here! Moss records are very different from standard ActionRecords. They are never called directly by an object, but rather by an action. If an object calling an action has a MossFlag set, then the parser executes the action, but while it's doing that, it looks at the called action to see if its first Aux num is between 0 and 15. If this is the case, then the parser considers the action record with that number to be a MossRecord. It reads the data of a MossRecord as follows:
Names: These are ignored. But remember, you can't leave them completely blank. You must fill in at least one name. A good name in this case is 'moss'. Then you know at a glance it's a MossRecord.
Obj#'s: These are ignored. For your own reference you may want to include here the numbers of the calling objects or actions.
Aux's: Only the first is used. This must give the number of Moss interruptions (which must equal the number of TimeChecks).
Room and Object SetFlags: In the first row only, starting with the 'Rm' box, fill in up to 6 TimeChecks. These are integers that indicate after how manymoves a Moss interruption will occur.
TextBoxes: Working _vertically_ (i.e. A1,A1,A1,then A2,A2,A2) fill in the MossText messages that will be displayed for each Moss interruption.
• ACKNOWLEDGEMENTS
AdventureMaker is written in LightSpeed Pascal, thus portions Think Technologies. This scrolling help box uses the "About..." procedure created by John Wind, copyright 1988.